package exception;

/**
 * 异常处理机制中的try-catch
 * 语法：
 * try{
 *     可能出现的异常代码片段
 * }catch(XXXException e){
 *     try中出现XXXException后出的异常手段
 * }
 */
public class TryCatchDemo {
    public static void main(String[]args){
        System.out.println("程序开始了");
        try {
            //String str = "";
            String str = "a";
            //jvm执行到某句话若出现异常则会实例化该异常并将其抛出
            System.out.println(str.length());//抛出一个空指针异常实例
            System.out.println(str.charAt(0));
       /* }catch (NullPointerException e){
            System.out.println("出现空指针并且解决了");
            //catch可以定义多个，当try中出现多个无法避免的异常时，可以分别捕获并处理
        }catch (StringIndexOutOfBoundsException e){
            System.out.println("出现下标越界错误并且解决了");
        }*/
        } catch (NullPointerException | StringIndexOutOfBoundsException e) {
            System.out.println("出现了空指针异常或者下标越界异常，已解决");
            //可以在最后一个catch处捕获Exception,避免因为意识不到的异常抛出导致程序中断
        } catch (Exception e) {
            System.out.println("反正就是出了个错");
        }
        /*
        try语句块中出现异常的语句块之后的内容都不再会执行
         */
        System.out.println("程序结束了");

    }

}
